/**
 * n个数字的一维数组R
 * 将R中的数组循环左移p个位置
 */

#include<vector>
#include<iostream>
using namespace std;

/**
 * 可以移动一位然后移动k次，无法直接移动k位
 * 此时为O(n^2)和O(1)
 * 
 * 或者使用辅助数组
 * O(n)和O(n)的复杂度
 */
void left(vector<int> &arr,int k){
    //这里使用辅助数组把，答案中的方法记住了
    vector<int> temp;
    for(int i=0;i<k;i++){
        temp.push_back(arr[i]);
    }
    for(int i=k;i<arr.size();i++){
        arr[i-k]=arr[i];
    }
    for(int i=0;i<k;i++){
        arr[arr.size()-k+i]=temp[i];
    }
}
auto show(vector<int> v){
    for(auto var : v){
        cout<<var<<" ";
    }
    cout<<endl;
}
int main(void){

    vector<int> v={1,2,3,4,5,6};
    show(v);
    left(v,3);
    show(v);
    return 0;
}